package com.genexususa.eo.connection.google.analytics;

import java.util.ArrayList;
import java.util.List;

/**
 * Created with IntelliJ IDEA.
 * User: Nico
 * Date: 22/07/13
 * Time: 12:03 PM
 * To change this template use File | Settings | File Templates.
 */
public class GoogleAnalyticsQuery implements IAPIQuery {

    private String filePath;
    private String applicationName;
    private String profileId;
    private String accountId;
    private String startDate;
    private String endDate;
    private String query;
    private Long analyticsImportId;
    private List<String> metrics;
    private List<String> dimensions;
    private List<String> filters;
    private List<String> sortsCol;
    private List<String> segments;
    private int maxResults;

    public GoogleAnalyticsQuery(String filePath, String applicationName, String profileId, String startDate, String endDate,
                                List<String> metrics, List<String> dimensions, List<String> filters, List<String> sortsCol,
                                int maxResults){
        this.filePath = filePath;
        this.applicationName = applicationName;
        this.profileId = profileId;
        this.startDate = startDate;
        this.endDate = endDate;
        this.metrics = metrics;
        this.dimensions = dimensions;
        this.filters = filters;
        this.sortsCol = sortsCol;
        this.maxResults = maxResults;
        this.accountId = "0";
    }

    public GoogleAnalyticsQuery(String filePath, String applicationName, String accountId, String profileId, String startDate, String endDate,
                                List<String> metrics, List<String> dimensions, List<String> filters, List<String> sortsCol,
                                int maxResults){
        this.filePath = filePath;
        this.applicationName = applicationName;
        this.profileId = profileId;
        this.startDate = startDate;
        this.endDate = endDate;
        this.metrics = metrics;
        this.dimensions = dimensions;
        this.filters = filters;
        this.sortsCol = sortsCol;
        this.maxResults = maxResults;
        this.accountId = accountId;
        this.segments = new ArrayList<String>();
    }

    public GoogleAnalyticsQuery(String filePath, String applicationName, String accountId, String profileId, String startDate, String endDate,
                                List<String> metrics, List<String> dimensions, List<String> filters, List<String> sortsCol,
                                int maxResults, List<String> segments){
        this.filePath = filePath;
        this.applicationName = applicationName;
        this.profileId = profileId;
        this.startDate = startDate;
        this.endDate = endDate;
        this.metrics = metrics;
        this.dimensions = dimensions;
        this.filters = filters;
        this.sortsCol = sortsCol;
        this.maxResults = maxResults;
        this.accountId = accountId;
        this.segments = segments;
    }

    public GoogleAnalyticsQuery(){
        this.filePath = "";
        this.applicationName = "";
        this.profileId = "";
        this.startDate = "";
        this.endDate = "";
        this.metrics = new ArrayList<String>();
        this.dimensions = new ArrayList<String>();
        this.filters = new ArrayList<String>();
        this.sortsCol = new ArrayList<String>();
        this.segments = new ArrayList<String>();
        this.maxResults = 0;
        this.accountId = "0";

    }

    public String getFilePath() {
        return filePath;
    }

    public void setFilePath(String filePath) {
        this.filePath = filePath;
    }

    public String getApplicationName() {
        return applicationName;
    }

    public void setApplicationName(String applicationName) {
        this.applicationName = applicationName;
    }

    public String getProfileId() {
        return profileId;
    }

    public void setProfileId(String profileId) {
        this.profileId = profileId;
    }

    public String getStartDate() {
        return startDate;
    }

    public void setStartDate(String startDate) {
        this.startDate = startDate;
    }

    public String getEndDate() {
        return endDate;
    }

    public void setEndDate(String endDate) {
        this.endDate = endDate;
    }

    public List<String> getMetrics() {
        return metrics;
    }

    public void setMetrics(List<String> metrics) {
        this.metrics = metrics;
    }

    public List<String> getDimensions() {
        return dimensions;
    }

    public void setDimensions(List<String> dimensions) {
        this.dimensions = dimensions;
    }

    public List<String> getFilters() {
        return filters;
    }

    public void setFilters(List<String> filters) {
        this.filters = filters;
    }

    public List<String> getSegments() { return segments; }

    public void setSegments(List<String> segments) { this.segments = segments; }

    public List<String> getSortsCol() {
        return sortsCol;
    }

    public void setSortsCol(List<String> sortsCol) {
        this.sortsCol = sortsCol;
    }

    public int getMaxResults() {
        return maxResults;
    }

    public void setMaxResults(int maxResults) {
        this.maxResults = maxResults;
    }

    public String getAccountId() {
        return accountId;
    }

    public void setAccountId(String accountId) {
        this.accountId = accountId;
    }

    public String getQuery() {
        return query;
    }

    public void setQuery(String query) {
        this.query = query;
    }

    public Long getAnalyticsImportId() {
        return analyticsImportId;
    }

    public void setAnalyticsImportId(Long analyticsImportId) {
        this.analyticsImportId = analyticsImportId;
    }
}
